package jtracking_server;

import jtracking_both.*;
import java.util.HashSet;

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.742E895B-89E4-A6FB-DC7B-A5C35DA1B31F]
// </editor-fold> 
public class Computer {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.AE68D71A-BFF9-179D-A9DA-E4E3BA60EAC6]
    // </editor-fold> 
    private HashSet<Datenpaket> datenpakete;

    /**
     * Die Computer-ID, mit der der PC eindeutig identifiziert wird. -> es darf keine zwei Computer mit der selben cid geben
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.BB59931A-63E8-FD09-F38B-2528680969C7]
    // </editor-fold> 
    private int cid;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.44229634-8B2E-BCA8-5CBE-947FBD33E7D8]
    // </editor-fold> 
    private String name;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.7B3D04FC-6A5D-4A71-4AA4-D6202103B381]
    // </editor-fold> 
    protected Computer (String name, int cid, HashSet<Datenpaket> datenpakete) {
        this.name=name;
        this.cid=cid;
        this.datenpakete=datenpakete;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.5ECCC6F0-7E58-522D-3BD9-D7ABC982F10B]
    // </editor-fold> 
    protected int getCID () {
        return cid;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.EA917983-C7E2-96B0-39E4-4D3134DC6256]
    // </editor-fold> 
    protected HashSet<Datenpaket> getDatenpakete () {
        return datenpakete;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.672D8234-E690-DBFB-ED37-99E494E86B33]
    // </editor-fold> 
    protected String getName () {
        return name;
    }

    Datenpaket neuestesDatenpaket;
    /**
     * liefert das neueste Datenpaket zurück, das von diesem Computer empfangen wurde.
     * @return das neueste Datenpaket, wenn keins existiert null
     * eventuell muss {@link DBManager.getAlleComputer()} ausgeführt werden, um in den Computer die neuesten Datenpakete zu schieben.
     */
    protected Datenpaket getNeuestesDatenpaket()
    {
        return neuestesDatenpaket;
    }

    /**
     * fügt dem Computer ein datenpaket hinzu.
     * trägt nicht in die Datenbank ein.
     * @param paket das einzutragende paket
     * @return ob erfolgreich
     */
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.E7ED5852-745D-B17F-2496-0406985843C3]
    // </editor-fold> 
    protected boolean addDatenpaket (Datenpaket paket) {
        if(neuestesDatenpaket==null || paket.getDatum().after(neuestesDatenpaket.getDatum())){
            neuestesDatenpaket=paket;
        }
        return datenpakete.add(paket);
    }

    /**
     * leert die liste der Datenpakete, zum garbagecleaning notwendig.
     * @return
     */
    protected void clearDatenpakete()
    {
        datenpakete.clear();
    }
}

